-- Carga Staging

--PESSOA
CREATE PROCEDURE CarregaPessoas(@DataCarga DATE)
AS
	DECLARE @idPessoa INT, @nome VARCHAR(200), @dataNascimento DATETIME, @isPM INT;
	
	DECLARE C_PESSOA CURSOR FOR
	SELECT [idPessoa],[nome],[dataNascimento],[isPM]
	FROM [SiGAT].[dbo].[Pessoa]
	
	OPEN C_PESSOA
		FETCH C_PESSOA INTO @idPessoa, @nome, @dataNascimento, @isPM
		WHILE (@@FETCH_STATUS = 0)
		BEGIN
			INSERT INTO ST_SiGAT.dbo.Pessoa (idPessoa, codPessoa, nome,dataNascimento, isPM,dataCarga)
			VALUES
				(@idPessoa, @idPessoa, @nome,@dataNascimento, @isPM, @DataCarga);			
			FETCH C_PESSOA INTO @idPessoa, @nome, @dataNascimento, @isPM
		END
	
	CLOSE C_PESSOA
	DEALLOCATE C_PESSOA;
go
--FIM CARGA PESSOA

--TESTE PESSOA
declare @data date
set @data = GETDATE();
EXEC CarregaPessoas @data;
USE ST_SiGAT;
SELECT * FROM PESSOA;
--FIM TESTE PESSOA


--VEICULO
CREATE PROCEDURE CarregaVeiculos (@dataCarga DATE)
AS
	DECLARE @idVeiculo INT, @marca VARCHAR(20), @modelo VARCHAR(20), @anoFabricacao int,
		@tipo VARCHAR(20);
	
	DECLARE C_VEICULOS CURSOR FOR
	SELECT [idVeiculo],[marca],[modelo],[anoFabricacao],[tipo]
	FROM [SiGAT].[dbo].[Veiculo]
	
	OPEN C_VEICULOS
		FETCH C_VEICULOS INTO @idVeiculo, @marca, @modelo, @anoFabricacao, @tipo
		WHILE (@@FETCH_STATUS = 0)
		BEGIN
			INSERT INTO [ST_SiGAT].[dbo].[Veiculo]
				   ([idVeiculo],[CodVeiculo],[marca],[modelo],[anoFabricacao],[tipo],[dataCarga])
			 VALUES
				   (@idVeiculo, @idVeiculo, @marca, @modelo, @anoFabricacao, @tipo, @dataCarga)
			
			FETCH C_VEICULOS INTO @idVeiculo, @marca, @modelo, @anoFabricacao, @tipo
		END
	
	CLOSE C_VEICULOS
	DEALLOCATE C_VEICULOS
	GO
--FIM CARGA VEICULO


--TESTE VEICULO
declare @data date
set @data = GETDATE();
EXEC CarregaVeiculos @data;
USE ST_SiGAT;
SELECT * FROM VEICULO;
--FIM TESTE VEICULO


--ENDERECOS
CREATE PROCEDURE CarregaEnderecos (@dataCarga DATE)
AS
	DECLARE @idEndereco INT, @Logradouro VARCHAR(45), @Bairro VARCHAR(45), @CEP VARCHAR(9);
	
	DECLARE C_ENDERECOS CURSOR FOR
	SELECT [idEndereco], [logradouro], [bairro], [cep]
		FROM [SiGAT].[dbo].[Endereco]
	
	OPEN C_ENDERECOS
		FETCH C_ENDERECOS INTO @idEndereco, @Logradouro, @Bairro, @CEP
		WHILE (@@FETCH_STATUS = 0)
		BEGIN
			INSERT INTO [ST_SiGAT].[dbo].[EnderecoOcorrencia]
			   ([idEndereco],[CodEndereco],[logradouro],[bairro],[cep],[dataCarga])
			VALUES
			   (@idEndereco, @idEndereco, @Logradouro, @Bairro, @CEP, @dataCarga)
			
			FETCH C_ENDERECOS INTO @idEndereco, @Logradouro, @Bairro, @CEP
		END
	
	CLOSE C_ENDERECOS
	DEALLOCATE C_ENDERECOS
	GO
--FIM CARGA ENDERECOS

--TESTE CARGA ENDERECOS
declare @data date
set @data = GETDATE();
EXEC CarregaEnderecos @data;
SELECT * FROM EnderecoOcorrencia;
--FIM TESTE ENDERECOS



--ENVOLVIDO
CREATE PROCEDURE CarregaEnvolvidos (@dataCarga DATE)
AS
	DECLARE @idOcorrencia INT, @idPessoa INT;
	
	DECLARE C_ENVOLVIDOS CURSOR FOR
	SELECT [idOcorrencia],[idPessoa]
	  FROM [SiGAT].[dbo].[Envolvido]
	  
	OPEN C_ENVOLVIDOS
		FETCH C_ENVOLVIDOS INTO @idOcorrencia, @idPessoa
		WHILE (@@FETCH_STATUS = 0)
		BEGIN
			INSERT INTO [ST_SiGAT].[dbo].[Envolvido]
				([idOcorrencia],[idPessoa],[CodOcorrencia],[CodPessoa],[dataCarga])
			VALUES
			(@idOcorrencia, @idPessoa, @idOcorrencia, @idPessoa, @dataCarga);
			FETCH C_ENVOLVIDOS INTO @idOcorrencia, @idPessoa
		END
	
	CLOSE C_ENVOLVIDOS
	DEALLOCATE C_ENVOLVIDOS
	GO
--FIM CARGA ENVOLVIDOS

--TESTE CARGA ENVOLVIDOS
EXEC CarregaEnvolvidos '2012-07-15';
SELECT * FROM Envolvido;
--FIM TESTE ENVOLVIDOS





--VEICULOOCORRENCIA
CREATE PROCEDURE CarregaVeiculosOcorrencia (@dataCarga DATE)
AS
	DECLARE @idOcorrencia INT, @idVeiculo INT;
	
	DECLARE C_VEICULOOCORRENCIA CURSOR FOR
	SELECT [idOcorrencia],[idVeiculo]
	  FROM [SiGAT].[dbo].[VeiculoOcorrencia]
	  
	OPEN C_VEICULOOCORRENCIA
		FETCH C_VEICULOOCORRENCIA INTO @idOcorrencia, @idVeiculo
		WHILE (@@FETCH_STATUS = 0)
		BEGIN
			INSERT INTO [ST_SiGAT].[dbo].[VeiculoOcorrencia]
				([idOcorrencia],[idVeiculo],[CodOcorrencia],[CodVeiculo],[dataCarga])
			VALUES
			(@idOcorrencia, @idVeiculo, @idOcorrencia, @idVeiculo, @dataCarga);
			FETCH C_VEICULOOCORRENCIA INTO @idOcorrencia, @idVeiculo
		END
	
	CLOSE C_VEICULOOCORRENCIA
	DEALLOCATE C_VEICULOOCORRENCIA
	GO
--FIM CARGA ENVOLVIDOS

--TESTE CARGA VEICULOSOCORRENCIA
EXEC CarregaVeiculosOcorrencia '2012-07-15';
SELECT * FROM VeiculoOcorrencia;
--FIM TESTE VEICULOSOCORRENCIA




--OCORRENCIA
CREATE PROCEDURE CarregaOcorrencias (@DataCarga DATE)
AS
	DECLARE
		@idOcorrencia int, @gravidade varchar(45), @possuiVitimas int, @quantidadeVitimas int ,
		@idEndereco int, @tipoOcorrencia varchar(45), @Quantidade int,
		@QuantidadeVeiculos int, @data DATETIME, @horaOcorrencia INT,
		@idCondicaoTempo INT,@idCondicaoVia INT,@idSinalizacaoVia INT, @idTipoOcorrencia INT;
	
	DECLARE C_OCORRENCIAS CURSOR FOR
	SELECT [idOcorrencia],[data],[gravidade]
		  ,[possuiVitimas],[idEndereco],[idCondicaoTempo]
		  ,[idCondicaoVia],[idSinalizacaoVia],[idTipoOcorrencia]
	  FROM [SiGAT].[dbo].[Ocorrencia]
	
	OPEN C_OCORRENCIAS
		FETCH C_OCORRENCIAS INTO 
			@idOcorrencia,@data,@gravidade,@possuiVitimas,@idEndereco,@idCondicaoTempo,@idCondicaoVia,@idSinalizacaoVia, @idTipoOcorrencia
		WHILE (@@FETCH_STATUS = 0)
		BEGIN
			IF (@possuiVitimas = 1)
			BEGIN
				SET @quantidadeVitimas = (SELECT COUNT(*) as QuantidadeVitimas FROM [SiGAT].[dbo].[Envolvido] WHERE idOcorrencia = @idOcorrencia)
			END
			ELSE
			BEGIN
				SET @quantidadeVitimas = 0;
			END
			SET @tipoOcorrencia = (SELECT DESCRICAO as TipoOcorrencia FROM SiGAT.dbo.TipoOcorrencia WHERE idTipoOcorrencia = @idTipoOcorrencia);
			
			SET @quantidadeVeiculos = (SELECT COUNT(*) as QuantidadeVeiculos FROM [SiGAT].[dbo].[Veiculoocorrencia] WHERE idOcorrencia = @idOcorrencia)
			
			SET @horaOcorrencia = DATEPART(hh,@data);
			--antes do insert preencher os campos que faltam
			
			INSERT INTO [ST_SiGAT].[dbo].[Ocorrencia]
					   ([idOcorrencia],[CodOcorrencia],[gravidade],[possuiVitimas],[quantidadeVitimas],[idEndereco]
					   ,[tipoOcorrencia],[Quantidade],[QuantidadeVeiculos],[dataCarga]
					   ,[dataOcorrencia],[horaOcorrencia],[idCondicaoVia],[idCondicaoTempo],[idSinalizacaoVia])
				 VALUES
					   (@idOcorrencia, @idOcorrencia, @gravidade, @possuiVitimas, @quantidadeVitimas, @idEndereco,@tipoOcorrencia,1,
					   @QuantidadeVeiculos,@DataCarga, @data, @horaOcorrencia, @idCondicaoVia, @idCondicaoTempo, @idSinalizacaoVia);
			FETCH C_OCORRENCIAS INTO 
			@idOcorrencia, @data, @gravidade, @possuiVitimas, @idEndereco, @idCondicaoTempo, @idCondicaoVia, @idSinalizacaoVia, @idTipoOcorrencia
		END
		
	CLOSE C_OCORRENCIAS
	DEALLOCATE C_OCORRENCIAS
	GO
--FIM CARGA OCORRENCIAS


TRUNCATE TABLE Ocorrencia;

--TESTE CARGA OCORRENCIAS
declare @data date
set @data = GETDATE();
EXEC CarregaOcorrencias @data;
SELECT * FROM Ocorrencia;
--FIM TESTE OCORRENCIAS